package com.wen.cim.common.route.algorithm.consistenthash.sort;

import com.wen.cim.common.construct.SortArrayMap;
import com.wen.cim.common.route.algorithm.consistenthash.AbstractConsistentHash;

/**
 * @author 文洪武
 * @title: SortArrayMapConsistentHash
 * @projectName cim-master
 * @description: TODO
 * @date 2021/11/2218:38
 */
public class SortArrayMapConsistentHash extends AbstractConsistentHash {

    private SortArrayMap sortArrayMap = new SortArrayMap();

    /**
     * 虚拟节点数量
     */
    private static final int VIRTUAL_NODE_SIZE = 2;

    public void add(long key, String value) {
        sortArrayMap.clear();
        // 添加虚拟节点，至于为什么，百度，它可以更好的平均分配
        for (int i = 0; i < VIRTUAL_NODE_SIZE; i++) {
            Long hash = super.hash("vir" + key + i);
            sortArrayMap.add(hash, value);
        }
        sortArrayMap.add(key, value);
    }

    public void sort() {
        sortArrayMap.sort();
    }

    @Override
    protected String getFirstNodeValue(String value) {
        long hash = super.hash(value);
        System.out.println("value = " + value + " hash = " + hash);
        return sortArrayMap.firstNodeValue(hash);
    }

}
